home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 081 / opus100b.arc / OMMMDOCS.ARC / MATRIX.DOC next >
Text File  |  1987-04-17  |  50KB  |  1,349 lines

  1.  
  2.                                       
  3.      ##       ##   ########   ######   #######    ######  ####      ####
  4.      ###     ###   ########  ########  ########   ######   ##        ##
  5.      ####   ####   ##    ##  #  ##  #  ##    ##     ##      ##      ##
  6.      ## ## ## ##   ##    ##     ##     ##    ##     ##       ##    ##
  7.      ##   #   ##   ##    ##     ##     ##    ##     ##        ##  ##
  8.      ##       ##   ##    ##     ##     ##    ##     ##         ####
  9.      ##       ##   ########     ##     #######      ##          ##
  10.      ##       ##   ########     ##     ######       ##         ####
  11.      ##       ##   ##    ##     ##     ##   ##      ##        ##  ##
  12.      ##       ##   ##    ##     ##     ##    ##     ##       ##    ##
  13.      ##       ##   ##    ##     ##     ##    ##     ##      ##      ##
  14.      ##       ##   ##    ##     ##     ##    ##   ######   ##        ##
  15.     ####     #### ####  ####   ####   ####   ###  ######  ###        ###
  16.  
  17.  
  18.           (c)Copyright 1987, Wynn Wagner III.  All rights reserved.
  19.  
  20.  
  21.  
  22.                +---------------------------------------------+
  23.                |                                             |
  24.                |   "Arrogance is the mother of invention."   |
  25.                |                                             |
  26.                |               - Guido Palermo -             |
  27.                |   Opus Bylaws and Covert Action Committee   |
  28.                |                                             |
  29.                |                                             |
  30.                |                                             |
  31.                |        Actually, Guido just claims this     |
  32.                |        quote.  When I checked, the quote's  |
  33.                |        serial number had been filed off...  |
  34.                |        so it's impossible to tell for sure. |
  35.                |                                             |
  36.                +---------------------------------------------+
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.          Opus now supports outbound matrix messages.
  44.  
  45.          This file is a general explanation of the methods involved
  46.          with sending messages from your system to other systems.
  47.  
  48.  
  49.  
  50.          IMPORTANT
  51.          ---------
  52.  
  53.          You won't find any step-by-step information here.  This is
  54.          a discussion on the theories behind Opus Outbound.
  55.  
  56.          The reason is that the ideas are going to seem very 
  57.          different.  I'll go further and say that if you skip this
  58.          background information, you are going to have a hard go of
  59.          it later!
  60.  
  61.          Please relax and take it easy.  There's no rule that says
  62.          you have to get Opus Outbound running today!
  63.  
  64.          I feel it's important to setup your head for all of this
  65.          before you setup your computer.
  66.  
  67.  
  68.  
  69.          SIMPLE
  70.          ------
  71.  
  72.          Doing outbound mail with Opus is fairly simple.  In fact,
  73.          getting that message across has been one of the toughest
  74.          jobs.
  75.  
  76.          Some of the beta testers say most of their work fell into
  77.          one of two categories:
  78.  
  79.                   * deleting lines of batch and routing files
  80.  
  81.                   * convincing themselves that fewer lines of
  82.                     instruction will do just as much work
  83.  
  84.  
  85.  
  86.          IDEA #1
  87.          -------
  88.  
  89.          With Opus, "mail events" are less important.  In fact, they
  90.          don't even exist.
  91.  
  92.          Instead, we'll be dealing with "behavior windows."
  93.  
  94.          With an event, you have to give every detail... making
  95.          statements that are procedural in nature.  
  96.  
  97.          With a behavior window, you paint with a wide brush telling
  98.          the system what to do with classes of remote systems.
  99.  
  100.          When systems could handle matrix traffic only during special
  101.          times, routing and times were important.  Because more and
  102.          more systems can process mail at any time, the idea of a
  103.          schedule becomes less important.
  104.  
  105.          The item of prime importance in Opus is COST.  We are going
  106.          to try to relieve you of the tedius details of scheduling
  107.          and concentrate on doing things for the least cost.
  108.  
  109.          There'll be more on this later.
  110.  
  111.  
  112.  
  113.          IDEA #2
  114.          -------
  115.  
  116.          Another new idea deals with the way bundles are created.
  117.  
  118.          A "bundle" is what some other systems call a "packet."  In
  119.          network operations, a packet has a special meaning... a meaning
  120.          that has nothing to do with network mail.  An "XModem Block"
  121.          is a packet in network terminology.  To avoid confusion with
  122.          an established word, Opus docs use "bundle."
  123.  
  124.          Anyway... you are probably used to seeing bundles generated
  125.          several times.  With some programs, bundles are build every 
  126.          time a mail schedule starts.  As a result, one message may be
  127.          put into a bundle several times.
  128.  
  129.          With Opus, bundles are built once by an external program called
  130.          oMMM (the Opus Matrix Message Masher).  Although I wrote the
  131.          original oMMM, BOB HARTMAN has adopted the program and has
  132.          added lots of widgets and handy features.
  133.  
  134.  
  135.  
  136.          IDEA #3
  137.          -------
  138.  
  139.          The driving forces of outbound traffic are file names!
  140.  
  141.          You'll have a special sub-directory set aside just for bundles
  142.          and other matrix files.  It's a sub-directory that belongs to
  143.          Opus and shouldn't have anything else put in there.  Opus will
  144.          maintain this sub-directory for you.
  145.  
  146.          It's kind of a "black hole."  David Finster says it takes
  147.          some getting used to.
  148.  
  149.          As soon as you run oMMM, messages that are marked KILL/SENT
  150.          in your matrix message area will disappear.  They haven't
  151.          been sent, yet.  They're just bundled and ready to go.
  152.  
  153.          File names are important to opus...
  154.  
  155.  
  156.  
  157.  
  158.          BUNDLE NAMES
  159.          ------------
  160.  
  161.          The file names of the bundles tell Opus how to treat the
  162.          different bundles.  Here's a typical bundle name:
  163.  
  164.                            12345678.OUT
  165.  
  166.          That says the bundle is for 1234/5678.  The numbers are in
  167.          hex (base 16).  The ".OUT" means it is a regular bundle.
  168.  
  169.          Other bundle extensions include:
  170.  
  171.                            .HUT     ... hold the bundle for pickup
  172.  
  173.                            .CUT     ... the other system can receive
  174.                                         continuous mail
  175.  
  176.          One nice thing is that you can manually change the file's
  177.          extension if you need to.  That would change the behavior
  178.          of the bundle when Opus sees it next.
  179.  
  180.          The oMMM program knows about these extensions and creates
  181.          them based on information you put into the oMMM control
  182.          file.  You'll have statements like this:
  183.  
  184.                            HOLD 124/102
  185.  
  186.          That would create a .HUT bundle file.
  187.  
  188.  
  189.  
  190.  
  191.          FLOW FILE NAMES
  192.          ---------------
  193.  
  194.          Files are also sent through the matrix.  oMMM builds and
  195.          maintains a file that tells Opus what files to send (or hold)
  196.          for whom.  A typical "file attach" file might be named:
  197.  
  198.                            12345678.FLO
  199.  
  200.          Other flow file extensions are:
  201.  
  202.                            .HLO     ... hold these files for pickup
  203.  
  204.                            .CLO     ... the other system can receive
  205.                                         continuous mail
  206.  
  207.          A flow file is just a text file.  It contains a list of files
  208.          that are to be sent to another system:
  209.  
  210.                            e:\net\outbound\00096581.mo1
  211.                            e:\pascal\notes.doc
  212.  
  213.          File names in a flow file never include wildcards.
  214.  
  215.  
  216.  
  217.  
  218.          ARCHIVED MESSAGES
  219.          -----------------
  220.  
  221.          The oMMM program will put messages into archives for you.
  222.          Details on how this is done can be found in the oMMM
  223.          documentation.
  224.  
  225.          The point here is that oMMM combines the functionality of
  226.          "generating packets" with that of programs like ArcMail.
  227.  
  228.          oMMM creates archives using the same numbering convention 
  229.          as other message archive programs.  The file name is the
  230.          difference between the sender's net/node and the receiver's
  231.          net/node.   The file extension is ".MO#" where `#' is a
  232.          number between 0 and 9.  In this case, MO stands for "messages
  233.          for outbound" and has nothing to do with Monday.  oMMM will
  234.          NOT produce a "TU" or "WE" (etc) file.
  235.  
  236.  
  237.  
  238.  
  239.          EXAMPLE
  240.          -------
  241.  
  242.          So far, we've covered bundles and flow files.  We've also hit
  243.          on some of the high points of oMMM.
  244.  
  245.          Here's the flow of a message...
  246.  
  247.          Let's say I've written a message to Mike Kelleher.  The message
  248.          is in my matrix message area and is flagged KILL/SENT.
  249.  
  250.          oMMM is executed to convert the message into a bundle.  In my
  251.          control file for oMMM, I have this:
  252.  
  253.                            CRASH 161/521 161/ALL
  254.  
  255.          The word "crash" is VERY misleading.  We just haven't come up
  256.          with a better word, yet.  CRASH in this case means that Mike
  257.          (161/521) runs a system that can receive continuous mail.
  258.  
  259.          This control file line tells oMMM to build a message archive
  260.          to 161/521.  In the archive will be any messages to Mike (521)
  261.          as well as messages to anybody else in net 161.
  262.  
  263.          When the flurry of activity dies down, you'll have a file 
  264.          called "00A10209.CLO" and another one with an ".MO1" extension.
  265.  
  266.          The message is now in queue.
  267.  
  268.  
  269.  
  270.                       +-------------------------------+
  271.                       |                               |
  272.                       | "Roads?  Where we're going we |
  273.                       | don't need roads."            |
  274.                       |                               |
  275.                       |     - from Back To The Future |
  276.                       |                               |
  277.                       +-------------------------------+
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.          ENTER OPUS, STAGE RIGHT
  285.          -----------------------
  286.  
  287.          Opus can tell by looking at the outbound sub-directory (called
  288.          the HOLD AREA) that there's a bundle for Mike.  Opus can tell
  289.          that Mike's system can receive continuous mail.
  290.  
  291.          It's in the middle of the afternoon.  Phone rates between Dallas
  292.          and San Francisco are the highest they'll be all day.  It's a
  293.          bad time to call.
  294.  
  295.          We aren't controlling calling times because of our software.  
  296.          The software doesn't care.  Both ends can handle matrix traffic
  297.          at any time.  We're controlling calling times based on the
  298.          phone rates.
  299.  
  300.          I have a Z-EVENT set in Opus that tells the system to make calls
  301.          only to local systems that can receive continuous mail.
  302.  
  303.  
  304.  
  305.  
  306.          Z-EVENT: The Behavior Window
  307.          ----------------------------
  308.  
  309.          A Z-EVENT is setup using the Opus event manager.  It starts
  310.          out looking like any other event... except that it has a
  311.          Z for a tag.
  312.  
  313.          In addition to the start time and event length, there are 
  314.          several yes/no questions that go along with a Z-EVENT:
  315.  
  316.  
  317.                   Local only? .......... YES: only make calls to systems
  318.                                               whose cost field is 0.
  319.                                          NO:  it's okay to make calls
  320.                                               that cost money
  321.  
  322.                   #CM only? ............ YES: only call systems who have
  323.                                               .CUT and/or .CLO files
  324.                                          NO:  not restricted to continuous
  325.                                               mail systems
  326.  
  327.                   Mail only? ........... YES: don't let human callers
  328.                                               on-line, concentrate on mail.
  329.                                          NO:  humans and the matrix coexist.
  330.  
  331.                   File requests ok? .... YES: let other systems make file
  332.                                               requests
  333.                                          NO:  don't allow file requests
  334.  
  335.  
  336.          During the day, I have a Z-EVENT that has LOCAL, #CM, and
  337.          FILE REQUESTS set to YES.  I don't want to make long-distance
  338.          calls, and I don't want to call systems that can't handle
  339.          mail on a continuous basis.
  340.  
  341.  
  342.  
  343.  
  344.          POOR MIKE, JUST HANGING OUT
  345.          ---------------------------
  346.  
  347.          So, there sits the .CLO file for Mike (see EXAMPLE above).
  348.          Although it says Mike's board can accept mail on a continuous
  349.          basis, the COST field in the node list for 161/521 isn't zero.
  350.          It's a long distance call.
  351.  
  352.          Opus will not call 161/521.
  353.  
  354.          At midnight, the phone rates are lower.  I have another Z-EVENT
  355.          that allows #CM only.  In other words, at midnight I drop the
  356.          requirement that all calls be local.
  357.  
  358.          At that point, Opus will start trying to send the stuff.  (Knowing
  359.          Mike's board, it will take all night to get it through!)
  360.  
  361.  
  362.  
  363.  
  364.  
  365.          Z-EVENT OVERVIEW
  366.          ----------------
  367.  
  368.          Here's how my Z-Events go...
  369.  
  370.                   Daytime ..... #CM, LOCAL
  371.  
  372.                   Overnight ... #CM
  373.  
  374.                   NMH ......... MAIL_ONLY
  375.  
  376.          For NMH (National Mail Hour), I drop the #CM requirement.
  377.          That let's Opus send to systems that can't handle continuous
  378.          mail.
  379.  
  380.          The point to all of this is that messages stay bundled all
  381.          the time.  What changes is the behavior of Opus.
  382.  
  383.  
  384.  
  385.  
  386.  
  387.          THAT'S ABOUT IT
  388.          ---------------
  389.  
  390.          At this point, the standard reaction is "I have some special
  391.          cases that this won't handle.  I have several pages of routing
  392.          and batch files to do all this special stuff."
  393.  
  394.          This is my experience: sysop thought patterns are what 
  395.          complicate matters.
  396.  
  397.          Possibly there are some special cases that Opus outbound can't
  398.          handle.  I haven't seen any.
  399.  
  400.          In the rest of this file, you'll find excerpts of NEW.DOCs form
  401.          various beta releases.  There are details on the HOLD AREA (sub-
  402.          directory), file requests, and dialing scripts.
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.          
  413.  
  414.  
  415.  
  416. ------------------------------------------------------------------------------
  417. Matrix Hold Area                                       [Control file addition]
  418.  
  419.          Opus wants its own sub-directory for outbound traffic.
  420.          Declare that area like this:
  421.  
  422.  
  423.                   MATRIX HOLD_AREA C:\Opus\Outbound\
  424.  
  425.  
  426.          The system will maintain that sub-directory for you.  There
  427.          are no user-servicable parts inside.
  428.  
  429.          That's not really true.  We'll be storing the OUT, FLO, and
  430.          AM? files there.  You can change the names of the files, and
  431.          that will affect the behavior of Opus.
  432.  
  433.          I strongly suggest you don't put other files in this
  434.          holding area.
  435.  
  436.  
  437.  
  438.                   TECHNICAL STUFF MOST FOLKS CAN SKIP:
  439.                   ------------------------------------
  440.  
  441.                   - "OUT" files
  442.  
  443.                     An "OUT" file is a regular IFNA-type message bundle.
  444.                     The file name is the remote system's net/node expressed
  445.                     as an 8-digit hex number.  The file extension is ".OUT".
  446.                     For example, a bundle destined for 124/108 would be
  447.                     in a file called "007C006C.OUT".
  448.  
  449.                     If present, the OUT file is sent using XModem/Crc.
  450.  
  451.  
  452.  
  453.                   - Files listed in a "FLO" file
  454.  
  455.                     A "FLO" file is normally used to contain a list of
  456.                     files declared as "File-Attach" in messages in the
  457.                     "OUT" file.  In other words, if you create a 
  458.                     "File-Attach" message, the message itself will be put
  459.                     into the "OUT" file, and the name of the file(s) to be
  460.                     sent will be put into the "FLO" file.
  461.  
  462.                     The file name is the remote system's net/node expressed
  463.                     as an 8-digit hex number.  The file extension is ".FLO".
  464.                     For example, a bundle destined for 124/108 would be
  465.                     in a file called "007C006C.FLO".
  466.  
  467.                     If present, the FLO file is sent using the VBTS protocol. 
  468.                     That stands for Voodoo-Bondage TeLink/Sealink.  First,
  469.                     there is a MODEM7 file name.  That is followed by a
  470.                     Sealink (or XModem) file transfer.  Normally, this
  471.                     method is compatible with both Sealink and Telink
  472.                     receivers.
  473.  
  474.                     IMPORTANT: If the first character of the file name
  475.                                listed in the flow file is "#", then Opus
  476.                                will truncate the file if it is successfully
  477.                                transmitted.  In other words, if the line
  478.                                "#12345678.TU1" appears, Opus will send the
  479.                                file "12345678.TU1" and then make it a
  480.                                zero-length file if the transmission is
  481.                                consumated.
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488. ------------------------------------------------------------------------------
  489. OUTBOUND MATRIX TRAFFIC                                [control file addition]
  490.  
  491.  
  492.          You have two primary methods for controlling phone calls made
  493.          by your Opus system: the control file and the event manager.
  494.  
  495.          The control file method is in effect if there is no event
  496.          to over-ride it.  In other words, Opus will give priority to
  497.          the event (described later).
  498.  
  499.  
  500.  
  501.          To disable outbound calls, put this into your control file:
  502.  
  503.                   Matrix Send NOTHING
  504.  
  505.  
  506.          To disable long distance outbound calls, put this into your
  507.          control file:
  508.  
  509.                   Matrix Send LOCAL
  510.  
  511.  
  512.          With those two restrictions, Opus now attempts to send any
  513.          outbound material it finds in the sub-directory declared
  514.          as your Hold_Area.
  515.  
  516.          If you want to keep humans off-line during a critical mail
  517.          period, include this:
  518.  
  519.                   Matrix Allow MAIL ONLY
  520.  
  521.  
  522.  
  523.  
  524.          IMPORTANT:  See the section called "The Matrix UNschedule."
  525.                      You can over-ride these control file settings
  526.                      with a new kind of event.  The "UNschedule" section
  527.                      describes this event.
  528.  
  529.  
  530.  
  531.  
  532.  
  533. ------------------------------------------------------------------------------
  534. THE MATRIX UNSCHEDULE
  535.            --
  536.  
  537.          A new event has been declared.  It's event tag "Z" which had
  538.          been designated "OPUS Internal Event."
  539.  
  540.          This is a way to over-ride control file settings.
  541.  
  542.  
  543.                 +----------------------------------------------+
  544.                 |                                              |
  545.                 | "But what HAPPENS during this event?"        |
  546.                 |                                              |
  547.                 | "Nothing.  It's not a real event.  A better  |
  548.                 |  phrase would be BEHAVIOR WINDOW."           |
  549.                 |                                              |
  550.                 +----------------------------------------------+
  551.  
  552.  
  553.          When a "Z" event is in progress, it's settings remain in
  554.          effect until the next "Z" event.  In other words, the
  555.          settings do NOT RETURN TO THEIR ORIGINAL VALUE at the "end"
  556.          of this event.
  557.  
  558.          Let's say you declare a "Z" event for every day of the week
  559.          from 9am to noon.  The behavior you describe in the "Z" event
  560.          will be in effect for those three hours.  Here's the part that
  561.          needs to be stressed... at noon, the behavior will remain in
  562.          effect unless there is a "Z" event declared then.
  563.  
  564.          That should probably be repeated...
  565.  
  566.                   * You can setup matrix behavior in the control file.
  567.                     If Opus runs into a "Z" event that is in progress, 
  568.                     those control file values are gone for the life
  569.                     of the program.
  570.  
  571.                   * To actually "end" a "Z" event, you have to begin
  572.                     another "Z" event.  In this case, the duration of 
  573.                     the event means "go to these values whenever you
  574.                     find yourself in this time period."
  575.  
  576.                   * The end of a "Z" event does NOT mean return to the
  577.                     old values.
  578.  
  579.                   * Whew.
  580.  
  581.  
  582.  
  583.          You can use this event to set the following items:
  584.  
  585.                   Local only.........No "Cost" phone calls are made
  586.  
  587.                   Regular mail.......Outbound goes to all (except HOLDs)
  588.  
  589.                   Continuous mail....Only packets (etc) marked for 
  590.                                      continuous mail are sent
  591.  
  592.                   Mail only..........No human callers are allowed on-line
  593.  
  594.                   No traffic.........Outbound mail is turned off
  595.  
  596.  
  597.          Using the "!" command off the main menu, select the event
  598.          section.  Then just set an otherwise unused event to a type "Z".
  599.          Additional selections will appear.
  600.  
  601.  
  602.  
  603.                   TECHNICAL NOTES MOST CAN IGNORE:
  604.                   --------------------------------
  605.  
  606.                   The following is the specs on the Z event.  It's not
  607.                   useful except to a programmer interested in twiddling
  608.                   or interpreting the schedule data file...
  609.  
  610.                            /*-----------------------------------------------*/
  611.                            /*                                               */
  612.                            /* EVENTS                                        */
  613.                            /*                                               */
  614.                            /*-----------------------------------------------*/
  615.                            #define EXT_EVENT   'X'    /* External event     */
  616.                            #define YELL_EVENT  'Y'    /* Yell event         */
  617.                            #define SCHEDS      35     /* Max. # of events   */
  618.                            
  619.                            struct _time
  620.                               begin
  621.                                  word  year;          /* Unused             */
  622.                                  word  month;         /* 0..12              */
  623.                                  word  day;           /* 0..31              */
  624.                                  word  daywk;         /* 0..7               */
  625.                                  word  hour;          /* 0..23              */
  626.                                  word  mins;          /* 0..59              */
  627.                                  word  sec;           /* Unused             */
  628.                               end;
  629.  
  630.  
  631.                            /*-----------------------------------------------*/
  632.                            /* Schedule file record                          */
  633.                            /*-----------------------------------------------*/
  634.                            struct _sched
  635.                               begin
  636.                                  struct _time time;   /* Starting time      */
  637.                                  word  len;           /* Duration of event  */
  638.                                  int   enable;        /* 1==Enabled         */
  639.                                  word  trigger;       /* Unknown/unused     */
  640.                                  word  result;        /* X errorlevel       */
  641.                                  byte  tag;           /* Event type         */
  642.                                  byte  junk_1;        /*                    */
  643.                                  word  a;             /* OPUS: Reserved     */
  644.                                  word  b;             /* OPUS: Reserved     */   
  645.                                  word  c;             /* OPUS: Reserved     */
  646.                                  word  matrix_mask;   /* Matrix ability     */
  647.                                  byte  junk_2;        /* OPUS: Reserved     */
  648.                                  byte  GMT;           /* OPUS: Set=GMT      */
  649.                               end;
  650.  
  651.                            The `matrix_mask' field is valid only if `tag'
  652.                            is Z and `result' is 1.  It is subject to contain
  653.                            debris or be otherwise defined in other cases.
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663. ------------------------------------------------------------------------------
  664. MATRIX BUNDLING                                        [control file addition]
  665.  
  666.          There is no internal bundler (the thing that maintains
  667.          message bundles destined for some other system).  You can
  668.          exit Opus with a pre-set ErrorLevel to call the bundler
  669.          program when the contents of the matrix area changes.
  670.  
  671.          For example, if you call and enter a message into your
  672.          network area, Opus will exit with an ErrorLevel of 11
  673.          *after* you have ended your regular session...
  674.  
  675.                    Matrix After Edit Exit 11
  676.  
  677.          For information on one possible bundling method, refer to
  678.          "oMMM"... a stand-alone no-frills bundling program.
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687. ------------------------------------------------------------------------------
  688. MATRIX FILE REQUESTS
  689.  
  690.  
  691.          ENABLING REQUESTS
  692.          -----------------
  693.  
  694.          If you want to allow file requests, put this into your control
  695.          file:
  696.  
  697.                   Matrix allow requests
  698.  
  699.  
  700.          IMPORTANT:  See the section called "The Matrix UNschedule."
  701.                      You can over-ride these control file settings
  702.                      with a new kind of event.  The "UNschedule" section
  703.                      describes this event.
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.          APPROVAL LISTING
  711.          ----------------
  712.  
  713.          In addition, you will need a file containing a list of files
  714.          approved for file requests.  This is a standard, garden-variety
  715.          text file.  It MAY include wildcards.  Declare the file like this:
  716.          
  717.                   Matrix okfile c:\opus\okfile.lst
  718.  
  719.          This is a "raw" list.  It should contain nothing other than
  720.          file name.  Only one file name should be on a line.  The items
  721.          must begin in the far left column.
  722.  
  723.          Example:          c:\dl\pascal\*.*
  724.                            c:\net\node*.a??
  725.                            c:\dl\forth\this.one
  726.  
  727.                            ^
  728.                            |
  729.                            |
  730.                            Pretend this starts way over there
  731.                                                           |
  732. <---------------------------------------------------------+
  733.  
  734.  
  735.  
  736.          
  737.  
  738.          SYSTEM ADVERTISEMENT AND FILE LIST
  739.          ----------------------------------
  740.  
  741.          One more declaration will generalize your list of available
  742.          files.  In other words, if somebody wants to know what you have
  743.          on-line that is available for requesting, the standard Opus
  744.          method is to request a file called FILES.  When Opus receives
  745.          a request for FILES, it will automatically transmit the
  746.          file you declare like this:
  747.  
  748.                   Matrix avail c:\opus\filelist.arc
  749.  
  750.  
  751.          NOTE: Do NOT put comments on the `okfile' or on the `avail'
  752.                lines.
  753.  
  754.  
  755.          In addition to a listing of files, it would be a good idea
  756.          to include a statement that wildcards are not allowed on
  757.          file requests (see below).  This file can also tell the
  758.          caller something about your system.
  759.  
  760.          You include the extension in the control file... so the file
  761.          can be a TXT, DOC, ARC or any other kind of file.
  762.  
  763.          PLEASE do not use "filelist.arc" as the name of the file.
  764.          For The POLE, we're using "POLELIST.LST".  Using this scheme,
  765.          every system can have a unique file name.  This should make
  766.          file management much easier on the caller.
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.          IMPLEMENTATION RESTRICTION
  776.          --------------------------
  777.  
  778.          The requesting system cannot use a wildcard in the file
  779.          name.  By letting you put wildcards in the list of approved
  780.          files, it makes it a little tedious to allow wildcards in
  781.          the request.  Not impossible.  Just tedious.  So... to make
  782.          things easy on the sysop... I made a design decision to make
  783.          it harder on the calling system.  This will probably change
  784.          sometime down the line, but I have my hands too full to worry
  785.          about such stinkin' nicities.  As it were.
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.          ERRORS: NO SUCH FILE
  793.          --------------------
  794.  
  795.          This version of Opus sends the "avail" file if no requested
  796.          files are available.  Eventually this Oops file will be
  797.          separate and configurable via the control file.
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.          BEFORE ANYBODY ASKS
  805.          -------------------
  806.  
  807.          No, Opus does not currently have a method for initiating
  808.          file requests.
  809.  
  810.          Opus can only accept a file request from another system.
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817. ------------------------------------------------------------------------------
  818. SPECIAL MATRIX MENU
  819.  
  820.          When Opus is waiting for a call, you can get to a special 
  821.          matrix section.
  822.  
  823.          Press "M" when you see the "Ready" status line.
  824.  
  825.          The menu includes these items:
  826.  
  827.                   UNPACK.......process/toss any PKT files found in the
  828.                                current default sub-directory.  This is the
  829.                                same thing as the familiar `-u' command
  830.                                line option.
  831.  
  832.                   POLL.........call a system whether or not there is any
  833.                                pending outbound mail.  If there is a
  834.                                connection, Opus will dynamically generate
  835.                                and transmit a dummy message bundle if there
  836.                                isn't a real one available.
  837.  
  838.                                As many as 9 or 10 tries will be made.  You
  839.                                can stop the poll by pressing <esc>.  If no
  840.                                connection is made after several attempts,
  841.                                Opus will recycle to its on-line ("Ready")
  842.                                state.
  843.  
  844.                                If a connection is made, you can expect any
  845.                                items to be transmitted ... even those
  846.                                marked as "hold".
  847.  
  848.                                When you cancel a poll, you may have to 
  849.                                press <esc> a couple of times.  The first
  850.                                will cancel the current call.  The second
  851.                                one will cancel the polling sequence.
  852.  
  853.                   INFORMATION..generate a chart showing the status of
  854.                                pending outbound traffic.
  855.  
  856.  
  857.  
  858.  
  859. ------------------------------------------------------------------------------
  860. IMMEDIATE CALL
  861.  
  862.          When Opus is waiting for a call, you can force it to make an
  863.          outbound call immediately.
  864.  
  865.          Press "C" when you see the "Ready" status message.
  866.  
  867.          If it feels it needs to, Opus will make a call.  In other words,
  868.          this does not force Opus to actually originate a matrix session
  869.          unless there is sendable outbound traffic.
  870.  
  871.  
  872.  
  873.  
  874. ------------------------------------------------------------------------------
  875. UNSUCCESSFUL CONNECTIONS
  876.  
  877.          Previous versions would make an undetermined number of phone
  878.          calls to a remote system.
  879.  
  880.          Beginning with this version, a counter is maintained.  It is
  881.          incremented when there is a connection that does is not
  882.          consumated.  If there is a carrier but no matrix session, 
  883.          this counter gets bumped.
  884.  
  885.  
  886.  
  887.          TECHIE STUFF MOST CAN SKIP
  888.          --------------------------
  889.  
  890.          The counter is a 0-byte file in the outbound holding area.
  891.  
  892.          The file name is something like this:
  893.  
  894.                   ########.$$#
  895.                   ||||||||   |
  896.                   \||/\||/   |
  897.                    \/  \/    |
  898.                    net node  counter
  899.  
  900.          The net and node are 4 character hex numbers.  The counter can
  901.          be anything from 0 to 9.
  902.  
  903.          If Opus finds such a file, it's supposed to refuse to make a
  904.          call if the counter is 4 or greater.  If it equals 4, you'll
  905.          get a log entry.
  906.  
  907.          The "flag" for this counter is an "?" in the middle of the
  908.          extension.  The first character of the extension is also an
  909.          "$"... but that is NOT guaranteed for future versions.  You 
  910.          should use a wildcard for the first character if you want to
  911.          be upward compatible.
  912.  
  913.          Sneaky Arrogant Hacker Trick: if you want to guarantee continued 
  914.          calls, try building a read-only file that looks like the counter 
  915.          file.  It should have a low counter value.  If the file is 
  916.          read-only, Opus will see it but will be unable to increment the 
  917.          counter.  I should say this is totally untested, but it sounds 
  918.          like it might work.
  919.  
  920.          The reason for such a method is simple.  A 0-byte file takes up
  921.          NO disk space except for the directory entry.  Plus, it is easy
  922.          to access because DOS does a good job of buffering directories.
  923.          Access routines are in DOS ... so they don't have to be in Opus.
  924.          In other words, it seems like a good way to us "database code"
  925.          that's already in your computer... and to do so without using
  926.          up any disk space you don't already have allocated.
  927.  
  928.  
  929.  
  930.  
  931.  
  932.          PLEASE READ THIS PART
  933.          ---------------------
  934.  
  935.          Here's the situation... if Opus finds the counter file showing
  936.          it tried to call a board unsuccessfully... it will not make
  937.          further calls.
  938.  
  939.          You can manually delete them to enable further calls to
  940.          the board(s) in question.
  941.  
  942.          I'm assuming everybody has some kind of daily house-cleaning
  943.          routine.  You can put this into your house-cleaning batch file:
  944.  
  945.                   DEL C:\OPUS\OUTBOUND\*.?$?
  946.  
  947.          The path should be your Opus hold area.  It deletes all files
  948.          that have "$" as the middle character of the extension.
  949.          Every time you use this statement, it will re-enable calls to
  950.          boards that had unsuccessful tries earlier.
  951.  
  952.          There is also a HOUSECLEANING Z-EVENT which will remove these
  953.          Dollar-Sign Files.
  954.  
  955.  
  956.  
  957.  
  958. ------------------------------------------------------------------------------
  959. WILD ECHOMAIL
  960.  
  961.          The unarc routine now uses wildcards.  In other words, it will
  962.          try to unarc "*.MO?" in your matrix hold area.  
  963.            
  964.          If you get something from a message archiver other than oMMM 
  965.          (ie "TU?", "WE?"....), it will try to unarc that specific file.
  966.            
  967.          This change means that attached messages are no longer needed 
  968.          for archived messages!  oMMM does not produce such a message.
  969.            
  970.  
  971.  
  972.  
  973.  
  974. ------------------------------------------------------------------------------
  975. NEW MATRIX BEHAVIOR MASK
  976.  
  977.          Using the event setup menu, you can now tell Opus not to
  978.          exit after SQUIRTmail and ArcMail.
  979.  
  980.          The mask is called "Exits suppressed" on the menu.
  981.  
  982.          If you turn this on, then any "EXIT AFTER CRASHMAIL" and 
  983.          "EXIT AFTER ARCMAIL" in your control file are ignored.
  984.  
  985.  
  986.                   NOTE: There was a slight re-wording of the event menu.
  987.                         The "Exit code" for external events is now
  988.                         "X)exit code".
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999. ------------------------------------------------------------------------------
  1000. MATRIX SESSION SCRIPTS
  1001.  
  1002.          Instead of a phone number, the "phone" field of a record in
  1003.          the node list can contain the name of a script file.
  1004.  
  1005.          Script files are in quotes...
  1006.  
  1007.                   PHONE NUMBER:     555-1212
  1008.  
  1009.                   SCRIPT FILES:     "555-1212"
  1010.                                     "HARDWIRE.CTL"
  1011.                                     "SATORE.SPT"
  1012.  
  1013.  
  1014.          All script files must be in the sub-directory you've declared
  1015.          as being the NET_INFO sub-directory.
  1016.  
  1017.          NOTE:    This addition to Opus does not address any methods for
  1018.                   getting a quoted file name into the node list.  But if
  1019.                   you can get them in, Opus will understand them.
  1020.  
  1021.  
  1022.  
  1023.  
  1024.          CONTENTS OF A SCRIPT FILE
  1025.          -------------------------
  1026.  
  1027.          A script file is created with a text editor.  Each line must
  1028.          contain a KEYWORD.  In most cases, it will contain other material.
  1029.  
  1030.          The keyword must be in the far lefthand column of each line.  The
  1031.          system is not sensitive to the case of keywords... upper- and
  1032.          lowercase is the same.  
  1033.  
  1034.          Some keywords require additional information.  You should put
  1035.          a single space after the keyword, then start typing the 
  1036.          additional information.  In other words, if you put a keyword
  1037.          then TWO spaces... the second space will be considered part of
  1038.          the additional information.
  1039.  
  1040.  
  1041.  
  1042.  
  1043.          KEYWORDS
  1044.          --------
  1045.  
  1046.          In the examples below, please pretend the keywords appear in the 
  1047.          far lefthand column!
  1048.  
  1049.  
  1050.                                -----------------------------------------------
  1051.  
  1052.                   XMIT     ... send something to the modem.  As in the
  1053.                                modem initialization string in the control
  1054.                                file, Opus understands the following 
  1055.                                special characters:
  1056.  
  1057.                                     ~  ... slight pause
  1058.                                     |  ... transmit a <cr> character
  1059.  
  1060.                                EXAMPLE:
  1061.  
  1062.                                     xmit ATZ|
  1063.                                     xmit AT|~ATHO|
  1064.  
  1065.                                              
  1066.                                -----------------------------------------------
  1067.  
  1068.                   DIAL     ... transmit whatever additional information
  1069.                                appears on the same line of the script, 
  1070.                                then wait for a modem response.
  1071.  
  1072.                                If the modem reports any kind of failure
  1073.                                (eg "BUSY"), the script will be terminated.
  1074.  
  1075.                                NOTE: The dial "prefix" and "suffix" from
  1076.                                      the control file are NOT used here.
  1077.  
  1078.                                EXAMPLE:
  1079.  
  1080.                                     dial 555-1212
  1081.  
  1082.  
  1083.                                -----------------------------------------------
  1084.  
  1085.                   PHONE    ... a special-case way of transmitting the remote
  1086.                                system's phone number.  It works like XMIT.
  1087.                                In other words, there's no waiting around
  1088.                                for a response.
  1089.  
  1090.  
  1091.                                -----------------------------------------------
  1092.  
  1093.                   WAIT     ... wait for a character from the remote system.
  1094.                                A 40 second period of no input will terminate
  1095.                                the script.
  1096.  
  1097.                                EXAMPLE:
  1098.  
  1099.                                     wait :
  1100.                                     wait =
  1101.  
  1102.  
  1103.                                -----------------------------------------------
  1104.  
  1105.                   SESSION  ... in most cases, this will be the last keyword
  1106.                                in your scripts.  It means Opus should begin
  1107.                                a network session with the remote system.
  1108.  
  1109.                                The session begins with whacking, if necessary.
  1110.                                Then it moves through the SYNC procedure into
  1111.                                the exchange of bundles and files.
  1112.  
  1113.                                EXAMPLE:
  1114.  
  1115.                                     session
  1116.  
  1117.  
  1118.                                -----------------------------------------------
  1119.  
  1120.                   DOS      ... send a command to DOS.
  1121.  
  1122.                                You can process something... or even summon
  1123.                                a stand-alone netmail session-handler.
  1124.  
  1125.                                EXAMPLE:
  1126.  
  1127.                                     dos DIR
  1128.                                     dos ARCA test *.pkt
  1129.  
  1130.  
  1131.                                -----------------------------------------------
  1132.  
  1133.                   CARRIER  ... if there's no carrier when Opus reaches
  1134.                                this keyword, the script will terminate
  1135.  
  1136.                                EXAMPLE:
  1137.  
  1138.                                     carrier
  1139.  
  1140.  
  1141.                                -----------------------------------------------
  1142.  
  1143.                   INIT     ... go through the normal modem initialization
  1144.                                routine.
  1145.  
  1146.                                -----------------------------------------------
  1147.  
  1148.                   BAUD     ... set the computer's async port to the remote
  1149.                                system's baud rate
  1150.  
  1151.                                -----------------------------------------------
  1152.  
  1153.  
  1154.  
  1155.  
  1156.          CHECKLIST
  1157.          ---------
  1158.  
  1159.             * Script file names are in quotes in the node list 
  1160.               phone field.
  1161.  
  1162.             * All script files must be in the NET_INFO sub-directory.
  1163.  
  1164.             * Each line must have a keyword in the far lefthand column.
  1165.  
  1166.             * Most keywords require additional information.  This 
  1167.               information should be separated from the keyword by a 
  1168.               single space character.
  1169.  
  1170.             * Most script files should end with "session"
  1171.  
  1172.  
  1173.  
  1174.  
  1175.          SAMPLE SCRIPT
  1176.          -------------
  1177.  
  1178.          This script, for PC PURSUIT, was done by Rick Huebner:
  1179.  
  1180.  
  1181.              dos if exist outbound\007C00D2.$$? del outbound\007C00D2.$$?
  1182.              init
  1183.              baud
  1184.              xmit ~AT|~ATS0=0|~ATDT3417733|~~~~~~~~~~~~~~~~~~~~
  1185.              carrier
  1186.              xmit |~D~|
  1187.              wait =
  1188.              xmit ~D1|
  1189.              wait @
  1190.              xmit ~c dial214/12,username|
  1191.              wait =
  1192.              xmit ~password|
  1193.              wait T
  1194.              xmit ~~|~~I|~~ATZ|
  1195.              wait K
  1196.              xmit ~ATDT3809063|
  1197.              wait -
  1198.              xmit ~~~~~~
  1199.              carrier
  1200.              session
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206. ------------------------------------------------------------------------------
  1207. SAMPLE MATRIX-ORIENTED BATCH FILE
  1208.  
  1209.          Any batch file for Opus must be able to respond to the
  1210.          following pre-defined ErrorLevels:
  1211.  
  1212.             VALUE | MEANING                             | ACTION
  1213.            -------+-------------------------------------+---------
  1214.              255  | an internal error generated by      | recycle
  1215.                   | MicroSoft "C".  (eg STACK OVERFLOW) |
  1216.                   |                                     |
  1217.                5  | reserved by Opus                    | recycle
  1218.                   |                                     |
  1219.                4  | reserved by Opus                    | recycle
  1220.                   |                                     |
  1221.                3  | very very serious error (No FOSSIL, | halt
  1222.                   | no user file, etc)                  |
  1223.                   |                                     |
  1224.                2  | minor error (i/o error)             | recycle
  1225.                   |                                     |
  1226.                1  | ^C (keyboard halt request)          | halt
  1227.                   |                                     |
  1228.                0  | ???                                 | recycle
  1229.            -------+-------------------------------------+---------
  1230.  
  1231.  
  1232.  
  1233.  
  1234.          Here is a sample batch file:
  1235.  
  1236.            +----+----------------------------------------------------+
  1237.            |Line| Batch file                                         |
  1238.            +----+----------------------------------------------------+
  1239.            |    |                                                    |
  1240.            |  1 | :start                                             |
  1241.            |  2 | E:                                                 |
  1242.            |  3 | cd E:\opus                                         |
  1243.            |  4 | Opus %1 %2 %3 %4 %5 %6                             |
  1244.            |  5 | if ERRORLEVEL 255 goto start                       |
  1245.            |  6 | if ERRORLEVEL   8 goto start                       |
  1246.            |  7 | if ERRORLEVEL   7 goto bundles                     |
  1247.            |  8 | if ERRORLEVEL   6 goto prepecho                    |
  1248.            |  9 | if ERRORLEVEL   3 goto end                         |
  1249.            | 10 | if ERRORLEVEL   2 goto start                       |
  1250.            | 11 | if ERRORLEVEL   1 goto end                         |
  1251.            | 12 | if ERRORLEVEL   0 goto start                       |
  1252.            | 13 | :prepecho                                          |
  1253.            | 14 | E:\Opus\Util\ScanMail -maxmsgs 500 -short          |
  1254.            | 15 | :bundles                                           |
  1255.            | 16 | E:\Opus\oMMM -hE:\Opus\Outbound -cE:\Opus\oBUN.Ctl |
  1256.            | 17 | goto start                                         |
  1257.            | 18 | :end                                               |
  1258.            | 19 |                                                    |
  1259.            |    |                                                    |
  1260.            +----+----------------------------------------------------+
  1261.  
  1262.            NOTES:
  1263.  
  1264.               Line 5...The check for #255 isn't really needed here
  1265.                        because the following line (ErrorLevel 8) will
  1266.                        end up trapping 255.  It's put here to stress
  1267.                        that 255 is a possible ErrorLevel.
  1268.  
  1269.               Line 6...Checking for ErrorLevel 8 is a safety measure.
  1270.                        It will trap any ErrorLevels above 8, too.  In
  1271.                        other words, the batch file is saying "If you
  1272.                        get anything else just recycle."
  1273.  
  1274.               Line 7...Respond to "Matrix After Edit Exit 7".  The
  1275.                        ErrorLevel 7 means something in my netmail message
  1276.                        area has changed.  The only thing we need to do
  1277.                        is put the new messages into bundles by calling
  1278.                        oMMM.  This ErrorLevel happens after somebody
  1279.                        types a message in the netmail area.
  1280.  
  1281.               Line 8...ErrorLevel 6 is this: "Matrix After Arcmail Exit 6".
  1282.                        It means we've gotten echomail that needs to be
  1283.                        scanned then put into bundles.
  1284.  
  1285.               Line 13..PREPECHO calls ScanMail.  Note that this falls
  1286.                        through to the bundler.
  1287.  
  1288.               Line 19..With DOS, you always have to have a blank line
  1289.                        when the last item is a label.
  1290.  
  1291.               
  1292.  
  1293.  
  1294.  
  1295. ------------------------------------------------------------------------------
  1296. CHECKLIST FOR GOIN ON-LINE
  1297.  
  1298.          * Make an outbound hold area sub-directory
  1299.  
  1300.          * Quadruple check to make sure that both ARCE and ARCA are
  1301.            on your path.  This may seem silly, but some folks had
  1302.            trouble with it.  For example, they had changed "ARCA.COM" 
  1303.            into "AA.COM" because of a patch message archive program.
  1304.  
  1305.            Without both ARCE and ARCE on your path, you can expect
  1306.            problems... tragic and/or humorous depending on your attitude.
  1307.  
  1308.            Do this:
  1309.  
  1310.                   1. From the DOS prompt, type ARCE and press Enter.
  1311.                   2. The Arce program should display a help screen. 
  1312.                      If it doesn't, don't try to run Opus outbound.
  1313.                      ARCE must be on-line.
  1314.                   3. From the DOS prompt, type ARCA and press Enter.
  1315.                   4. If ARCA doesn't respond with a help screen,
  1316.                      you need to get ARCA on your path.
  1317.  
  1318.          * Put OpED.BBS into the C:\OPUS\MISC sub-directory.
  1319.  
  1320.          * Put OPUS.EXE and the three new PRIV files into your 
  1321.            Opus root sub-directory.
  1322.  
  1323.          * Customize OPUS.CTL and compile it using OPUS_CTL.
  1324.  
  1325.          * Build an oMMM control file
  1326.  
  1327.          * Build a new batch file
  1328.  
  1329.          * Put everything on-line and fly to London for a week.
  1330.            In the CYBERSPACE echomail area, Vince can probably 
  1331.            explain this step to you.
  1332.                     
  1333.  
  1334.  
  1335.  
  1336. ------------------------------------------------------------------------------
  1337.  
  1338.  
  1339.  
  1340.                   The chief cause of problems is solutions.
  1341.  
  1342.                              -- Eric Sevareid --
  1343.  
  1344.  
  1345.  
  1346.  
  1347.                                       ###
  1348.  
  1349.